<?php

class ContingenciasController extends AppController {

    var $name = 'Contingencias';
    var $uses = array('Tienda', 'Logsql', 'TiendaLocal', 'Contingencia');
    var $helpers = array('Html', 'Ajax', 'Javascript', 'Vista', 'Interfaz');
    var $layout = "ajax";
    var $components = array('Utilitario', 'Interfaz', 'Vista', 'Maestro', 'Util');

    function beforeFilter() {
        $this->validar();
    }

    function index($busq = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title("Tiendas - Contingencias");
        $this->set('busq', $busq);

        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendasUsuario = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendasUsuario);

        $tiendasCondicion = array();

        foreach ($listaTiendasPermitidas as $llave => $valor) {
            $tiendasCondicion[] = $llave;
        }

        $listaContingencia = $this->Contingencia->find('all', array('conditions' => array('Contingencia.id >' => '0', 'Contingencia.tienda_id' => $tiendasCondicion)));
        $this->set('data', $listaContingencia);
        
        $listaTiendas = $this->Maestro->listar_tienda_todas();
        $this->set('listaTiendas', $listaTiendas);
    }
    
    public function nuevo() {
        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendas = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendas);
        $this->set('listaTiendas', $listaTiendasPermitidas);
    }

    public function buscar_puntos($id_tienda = null){
        if(!empty($id_tienda)){        
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $id_tienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->virtualFields['nombrecompleto'] = 'Punto.nombre || \' (\' || Punto.codigo  || \')\'';
            $listaPunto = $ObjPunto->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Punto.estatus' => 1), 'order' => 'Punto.codigo desc'));
            $this->set('listaPunto', $listaPunto);
        }
        else{
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }
    
    public function guardar($vent = null) {
        //  $this->permisos_accion_individual('unidad','nuevo','estatus'); // mensaje que se quiere mostrar
        $data = $this->request->data;
        if (!$this->Vista->empyt($data)) {
            extract($data);
            if($cant_facturas > 0) {
                $inicio=$this->Interfaz->fecha($inicio);
                $fin=$this->Interfaz->fecha($fin);
                $precio=$this->Interfaz->fecha($precio);
                if($this->diferencias_dias($inicio,$fin) < 0 ) {
                    $aux = $inicio;
                    $inicio = $fin;
                    $fin = $aux;
                }
                $aux=$this->Contingencia->find('count',array(
                    'conditions'=>array(
                        'Contingencia.tienda_id'=>$tienda_id ,'Contingencia.punto_id'=>$punto_id,
                        'OR'=>array(
                            'Contingencia.inicio BETWEEN ? AND ?' => array($inicio,$fin),
                            'Contingencia.fin BETWEEN ? AND ?' => array($inicio,$fin)
                            )
                        )));
                if($aux>0) {
                    $this->Vista->mensaje("La caja (Punto) ya tiene una contingencia que choca <br />con el rango de fecha: {$this->Interfaz->fecha($inicio)} a {$this->Interfaz->fecha($fin)}", 'ERROR');
                } else {
                    $this->Contingencia->query('BEGIN WORK');
                    $d['Contingencia']['cant_facturas'] = $cant_facturas;
                    $d['Contingencia']['fecha_precio'] = $precio;
                    $d['Contingencia']['inicio'] = $inicio;
                    $d['Contingencia']['fin'] = $fin;
                    $d['Contingencia']['nombre'] = $this->Interfaz->mayuscula($nombre);
                    $d['Contingencia']['tienda_id'] = $tienda_id;
                    $d['Contingencia']['punto_id'] = $punto_id;
                    $d['Contingencia']['usuario_id'] = $this->Interfaz->id($_SESSION['usuario_id']);
                    if ($this->Contingencia->save($d)) {
                        $this->Vista->mensaje("Contingencia Guardada Exitosamente!!!", 'EXITO');
                        $this->Contingencia->query('COMMIT');
                        $this->log();
                        $this->Vista->cerrar_ventana($vent);
                    } else {
                        $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR');
                        $this->Contingencia->query('ROLLBACK');
                    }
                }
            } else {
                $this->Vista->Mensaje('La cantidad de facturas debe ser mayor a cero (0)','Error');
            }
        }
        $this->index();
        $this->render("index");
    }

    public function cambiar($id = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $this->Contingencia->query('BEGIN WORK');
            $data['Contingencia']['id'] = $id;
            $data['Contingencia']['estatus'] = 0;
            if ($this->Contingencia->save($data)) {
                $this->Contingencia->query('COMMIT');
                $this->Vista->mensaje("Contingencia Bloqueada Exitosamente!!!", 'EXITO');
                $this->log();
            } else {
                $this->Contingencia->query('ROLLBACK');
                $this->Vista->mensaje($msj, 'ERROR');
            }            
        } else {
            $this->Vista->mensaje("Contingencia Inv&aacute;lida", 'ERROR');
        }
        $this->index();
        $this->render("index");
    }

}

//class
?>